iT邦幫忙

5

以Postgresql為主,再聊聊資料庫 typed table的應用

  • 分享至 

  • xImage
  •  

上一篇介紹了 create type,以及 typed table.
本篇介紹應用,這次就不做複合型態的了.就是直接建立type,建立typed table,
然後刪除屬性,新增屬性.

create type ty_gal as (
  id int
, name text
, stuff text
);

create table gal1 of ty_gal;
create table gal2 of ty_gal;

insert into gal1 values
(1, '小島南', '測試用'),
(2, '初川南', '測試用');

insert into gal2 values
(3, '相沢南', '測試用'),
(4, '小宵虎南', '測試用');

alter type ty_gal
 drop attribute stuff cascade;

alter type ty_gal
  add attribute products text[] cascade;

commit;

update gal1
   set products = array['SSIS-340', 'SSIS-315']
 where id = 1;
 
update gal1
   set products = array['BBAN-359', 'SHKD-987']
 where id = 2;
 
update gal2
   set products = array['IPX-819', 'IPX-801']
 where id = 3;
 
update gal2
   set products = array['SSIS-309', 'SSIS-281']
 where id = 4;

select *
  from gal1
union all
select *
  from gal2
order by id;

 id |   name   |      products
----+----------+---------------------
  1 | 小島南   | {SSIS-340,SSIS-315}
  2 | 初川南   | {BBAN-359,SHKD-987}
  3 | 相沢南   | {IPX-819,IPX-801}
  4 | 小宵虎南 | {SSIS-309,SSIS-281}
(4 rows)

線上展示連結:
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=56f53842156bf29508fa0e853e88538e

上面的簡單範例中,可以看到兩個typed table 都不需要去使用 alter table 來修改欄位,
我們只要直接alter type ... cascade 就可以了.
相信聰明的你,應該有想到這對於系統發展,構型的一致性,有一定的幫助了.


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-02-10 17:10:57

typed table...
/images/emoticon/emoticon06.gif

耳邊突然響起吳宗憲常講的一句話
https://ithelp.ithome.com.tw/upload/images/20220210/200017872E5oz8VC4l.png

0
尼克
iT邦大師 1 級 ‧ 2022-02-11 10:21:31

好奇心google 小島南
https://ithelp.ithome.com.tw/upload/images/20220211/20011825GagB5bNPdk.png

因為我想到 小島秀夫

我要留言

立即登入留言